#ifndef SIP_DIALOG_HANDLE123456_HPP__
#define SIP_DIALOG_HANDLE123456_HPP__

#include "SipResipConfigure.hpp"
#include "resip/stack/SipMessage.hxx"
#include "resip/stack/ApplicationMessage.hxx"

using namespace resip;

namespace wtsip{

class CSipDialogBase;
class CSipInviteDialog;
class CSipInviteDlgHandle;
class CSipClnTransaction;
class CSipSrvTransaction;

class RESIP_PUBLIC CSipDlgHandle{
public:

    virtual bool isFakeTransation(SipMessage& msg, CSipDialogBase& dlg) = 0;

    virtual bool onResponse(SipMessage& msg, CSipDialogBase& dlg) = 0;

    virtual bool onRequest(SipMessage& msg, CSipDialogBase& dlg) = 0;

	virtual bool onTimeout(ApplicationMessage& msg, CSipDialogBase& dlg) = 0;

    virtual bool onDestroy(CSipDialogBase& dlg) = 0;
};


class RESIP_PUBLIC CSipInviteDlgHandle{
public:
    virtual bool onTrying(SipMessage& msg, CSipInviteDialog& dlg)  = 0;

    virtual bool onCancel(SipMessage& msg, CSipInviteDialog& dlg) = 0;

    virtual bool onCanceled(SipMessage& msg, CSipInviteDialog& dlg)  = 0;

    virtual bool onFailed(SipMessage& msg, CSipInviteDialog& dlg) = 0;

    //virtual bool onFailed(SipMessage& msg, CSipInviteDialog& dlg, CSipClnTransaction& clntran) = 0;

    virtual bool onSucessed(SipMessage& msg, CSipInviteDialog& dlg)  = 0;

    //virtual bool onDisconnected(SipMessage& msg, CSipInviteDialog& dlg)  = 0;

    virtual bool onTerminate(SipMessage& msg, CSipInviteDialog& dlg) = 0;

    virtual bool onTerminated(SipMessage& msg, CSipInviteDialog& dlg)  = 0;

};

}


#endif

